package com.example.app6;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    // 定义一个变量来跟踪正在滚动的 ListView
    boolean isScrollingListView1 = false;
    boolean isScrollingListView2 = false;
    boolean isScrollingListView3 = false;
    private ListView listView1, listView2, listView3;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView1 = findViewById(R.id.listView1);
        listView2 = findViewById(R.id.listView2);
        listView3 = findViewById(R.id.listView3);


        List<User> list = new ArrayList<>();
        list.add(new User(R.drawable.z1));
        list.add(new User(R.drawable.z2));
        list.add(new User(R.drawable.z3));
        list.add(new User(R.drawable.z4));
        list.add(new User(R.drawable.z5));
        list.add(new User(R.drawable.z6));


        MyAdapter myAdapter = new MyAdapter(list, getApplicationContext());
        listView1.setAdapter(myAdapter);
        listView2.setAdapter(myAdapter);
        listView3.setAdapter(myAdapter);







// 假设你有三个分别为 listView1、listView2、listView3 的 ListView 对象



// 设置第一列 ListView 的触摸监听器
        listView1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getActionMasked();

                switch(action) {
                    case MotionEvent.ACTION_DOWN:
                        // 第一根手指按下，开始滑动第一列 ListView
                        isScrollingListView1 = true;
                        break;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:
                        // 第一根手指抬起或取消，停止滑动第一列 ListView
                        isScrollingListView1 = false;
                        break;
                    default:
                        // 其他触摸事件，根据需要进行处理，例如：
                        if (!isScrollingListView1) {
                            // 如果第一列 ListView 不在滑动状态，则不处理事件
                            return false;
                        } else {
                            // 否则，通过调用第一列 ListView 的 onTouchEvent() 方法继续处理触摸事件
                            return listView1.onTouchEvent(event);
                        }
                }

                return false;
            }
        });

// 设置第二列 ListView 的触摸监听器
        listView2.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getActionMasked();

                switch(action) {
                    case MotionEvent.ACTION_DOWN:
                        // 第二根手指按下，开始滑动第二列 ListView
                        isScrollingListView2 = true;
                        break;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:
                        // 第二根手指抬起或取消，停止滑动第二列 ListView
                        isScrollingListView2 = false;
                        break;
                    default:
                        // 其他触摸事件，根据需要进行处理，例如：
                        if (!isScrollingListView2) {
                            // 如果第二列 ListView 不在滑动状态，则不处理事件
                            return false;
                        } else {
                            // 否则，通过调用第二列 ListView 的 onTouchEvent() 方法继续处理触摸事件
                            return listView2.onTouchEvent(event);
                        }
                }

                return false;
            }
        });

// 设置第三列 ListView 的触摸监听器
        listView3.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getActionMasked();

                switch(action) {
                    case MotionEvent.ACTION_DOWN:
                        // 第三根手指按下，开始滑动第三列 ListView
                        isScrollingListView3 = true;
                        break;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:
                        // 第三根手指抬起或取消，停止滑动第三列 ListView
                        isScrollingListView3 = false;
                        break;
                    default:
                        // 其他触摸事件，根据需要进行处理，例如：
                        if (!isScrollingListView3) {
                            // 如果第三列 ListView 不在滑动状态，则不处理事件
                            return false;
                        } else {
                            // 否则，通过调用第三列 ListView 的 onTouchEvent() 方法继续处理触摸事件
                            return listView3.onTouchEvent(event);
                        }
                }

                return false;
            }
        });

// 设置一个全局的触摸监听器，用于处理第二、三根手指的触摸事件（包括滑动和松开）
        findViewById(android.R.id.content).setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getActionMasked();

                switch(action) {
                    case MotionEvent.ACTION_POINTER_DOWN:
                        // 另一根手指按下，停止滑动所有的 ListView
                        isScrollingListView1 = false;
                        isScrollingListView2 = false;
                        isScrollingListView3 = false;
                        break;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:
                        // 最后一根手指抬起或取消时，停止滑动所有的 ListView
                        isScrollingListView1 = false;
                        isScrollingListView2 = false;
                        isScrollingListView3 = false;
                        break;
                }

                return false;
            }
        });






    }
}